home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Gekkan Dennou Club 140
/
Gekkan Dennou Club - 2000.1 Vol. 140 (Japan).7z
/
Gekkan Dennou Club - 2000.1 Vol. 140 (Japan) (Track 1).bin
/
tools
/
xpicw
/
xpicw110.lzh
/
FPIC
/
MAKE_SRC.c
< prev
next >
Wrap
Text File
|
1995-07-18
|
2KB
|
144 lines
#include <stdlib.h>
#include <stdio.h>
/*
MAKE_SRC.C
~Sys_Fpic.hasの連鎖展開部分(の一部)のソースを自動作成~
*/
int c[5];
main()
{
int z,i,u,q,w,a;
int p,y,m;
for(z=0;z<=255;z++){
p=0;
y=0;
m=0;
w=8;
q=z;
for(;;){
if((w>=2) && ((q & 0xc0)==0x40)){
c[m++]=1;
y+=1024;
p-=2;
q=q<<2;
w-=2;
}
if((w>=2) && ((q & 0xc0)==0x80)){
c[m++]=2;
y+=1024;
q=q<<2;
w-=2;
}
if((w>=2) && ((q & 0xc0)==0xc0)){
c[m++]=3;
y+=1024;
p+=2;
q=q<<2;
w-=2;
}
if((w==2) && ((q & 0xc0)==0x00)){
c[m++]=4;
w-=2;
q=q<<2;
}
if((w>=3) && ((q & 0xe0)==0)){
c[m++]=0;
w-=3;
q=q<<3;
break;
}
if((w>=4) && ((q & 0xf0)==0x20)){
c[m++]=5;
y+=1024;
p-=4;
q=q<<4;
w-=4;
}
if((w>=4) && ((q & 0xf0)==0x30)){
c[m++]=6;
y+=1024;
p+=4;
q=q<<4;
w-=4;
}
if(w<2)break;
}
printf("J_");
a=0;
for(u=7;u>=0;u--){
if(u>w-1){
printf("%c",((z>>u)&1)+'0');
}else{
printf("x");
a=a+1;
}
}
printf(":\t*");
z=z+(1<<a)-1;
for(i=0;i<m;i++){
if(c[i]==0)printf("終");
if(c[i]==1)printf("左1/");
if(c[i]==2)printf("中1/");
if(c[i]==3)printf("右1/");
if(c[i]==4)printf("00/");
if(c[i]==5)printf("左2/");
if(c[i]==6)printf("右2/");
}
printf("\n");
if(m!=1){
printf(" lea %d%+d(a2),a2\n",y,p);
}
y = -y;
p = -p;
for(i=0;i<m;i++){
if(c[i]==0){
printf(" CHAIN_EX%d\n",w);
break;
}
if(c[i]==1){
y=y+1024;
p=p-2;
printf(" move.w #UpR1,%d%+d(a2)\n",y,p);
}
if(c[i]==2){
y=y+1024;
printf(" move.w #UpC,%d%+d(a2)\n",y,p);
}
if(c[i]==3){
y=y+1024;
p=p+2;
printf(" move.w #UpL1,%d%+d(a2)\n",y,p);
}
if(c[i]==4){
printf(" CHAIN00X\n");
break;
}
if(c[i]==5){
y=y+1024;
p=p-4;
printf(" move.w #UpR2,%d%+d(a2)\n",y,p);
}
if(c[i]==6){
y=y+1024;
p=p+4;
printf(" move.w #UpL2,%d%+d(a2)\n",y,p);
}
if(i==(m-1))printf(" CHAIN_NEXT\n");
}
printf("\n");
}
}